package org.code.clienteweb;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import org.tempuri.Service1SoapProxy;

public class GestionAdministrador {
	
	Service1SoapProxy s;
	
	public GestionAdministrador(){
		s=new Service1SoapProxy();
	}
	
	public Admin iniciarSesionAdministrador(String Usuario, String Contrasena){
		try {
			if(s.iniciarSesionAdmin(Usuario, Contrasena)){
				return new Admin(Usuario,Contrasena);
			}
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

	public List<Usuario> listarUsuarios(){
		try {
			String[] lista=s.listarUsuarios();
			if(lista!=null){
				List<Usuario> usuarios=new ArrayList<Usuario>();
				for(int i=0;i<lista.length;i++){
					StringTokenizer rest=new StringTokenizer(lista[i],"|");
					String[] cadenas=new String[3];
					int a=0;
					while(rest.hasMoreElements()){
						cadenas[a]=rest.nextToken();
						a++;
					}
					usuarios.add(new Usuario(cadenas[0],cadenas[1],cadenas[2]));
				}
				return usuarios;
			}
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public Usuario buscarUsuario(String nombre){
		try {
			StringTokenizer rest=new StringTokenizer(s.buscarUsuario(nombre),"|");
			return new Usuario(rest.nextToken(),rest.nextToken(),rest.nextToken());
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
	public List<Propietario> listarPropietarios(){
		try {
			String[] lista=s.listarPropietarios();
			if(lista!=null){
				List<Propietario> usuarios=new ArrayList<Propietario>();
				for(int i=0;i<lista.length;i++){
					StringTokenizer rest=new StringTokenizer(lista[i],"|");
					usuarios.add(new Propietario(rest.nextToken(),rest.nextToken(),rest.nextToken()));
				}
				return usuarios;
			}
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public Propietario buscarPropietario(String nombre){
		try {
			StringTokenizer rest=new StringTokenizer(s.buscarPropietario(nombre),"|");
			return new Propietario(rest.nextToken(),rest.nextToken(),rest.nextToken());
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
	public List<Comentario> listarComentariosPorUsuario(String nombre){
		try {
			String[] lista=s.listarComentarios(nombre);
			if(lista!=null){
				List<Comentario> comentarios=new ArrayList<Comentario>();
				for(int i=0;i<lista.length;i++){
					StringTokenizer rest=new StringTokenizer(lista[i],"|");
					comentarios.add(new Comentario(Integer.parseInt(rest.nextToken()),rest.nextToken(),rest.nextToken(),Integer.parseInt(rest.nextToken()),Integer.parseInt(rest.nextToken())));
				}
				return comentarios;
			}
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public int eliminarUsuario(String nombre){
		try {
			return s.darDeBaja(nombre);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return -1;
	}
	
	public int eliminarPropietario(String nombre){
		try {
			return s.darDeBajaPropetario(nombre);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return -1;
	}
	
	public boolean eliminarRestaurante(int idRestaurante){
		try {
			return s.eliminarRestaurante(idRestaurante);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;
	}
	
	public int eliminarComentario(int idComentario){
		try {
			return s.borrarComentario(idComentario);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return -1;
	}
	
	public boolean eliminarCarta(String plato, int idRestaurante){
		try {
			return s.eliminarCarta(plato, idRestaurante);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return false;
	}
	
	public boolean eliminarMenu(String menu, int idRestaurante){
		try {
			return s.eliminarMenu(menu, idRestaurante);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return false;
	}
}
